package com.xj.config;


import com.xj.bean.aop.LogAspects;
import com.xj.bean.aop.MathCalculator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;

/**
 * AOP： 动态代理
 *          指在程序运行期间动态的将某段代码切入到之低昂方法指定的位置进行运行的编程方式。
 * 1、导入 spring-context、spring-aspects
 * 2、业务代码在com.xj.bean.aop包下
 * 3、切面类LogAspects
 *          通知方法：
 *              前置通知：
 *              后置通知：
 *              返回通知：
 *              异常通知：
 *              环绕通知：动态代理手动推进目标方法运行（joinPoint.procced()）
 *
 * 4、@EnableAspectJAutoProxy 开启aop
 */
@EnableAspectJAutoProxy
@Configuration
public class MainConfigOfAOP {

    @Bean
    public MathCalculator calculator() {
        return new MathCalculator();
    }

    @Bean
    public LogAspects logAspects() {
        return new LogAspects();
    }
}
